//Sun Apr 25 19:00:00 CDT 2010
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;
set<pair<long long, long long> > v;

bool Check(long long A, long long B)
{// A >= B;
	stringstream s1;
	s1 << A;
	string str1 = s1.str();
	stringstream s2;
	s2 << B;
	string str2 = s2.str();
	if (str1.substr(1) == str2)
		return true;
	for (int i = 1; i < (int) str1.size(); i++)
	{
		string tmp = str1.substr(0, i) + str1.substr(i);
		//		cout << tmp << ", " << str2 << endl;
		if (tmp == str2)
			return true;
	}
	return false;
}

void Solve(long long N, int i, int j)
{
	//	set<pair<long long, long long> > ret;
	long long y = N % 11;
	if(y == 10) return;
	for (; y <= N; y += 11)
	{
		long long x = (N - y) / 11;
		long long mmin = min(10 * x + y, x);
		long long mmax = max(10 * x + y, x);
		if (Check(mmax, mmin) == true)
			v.insert(make_pair(mmax + i * pow(10, j), mmin));
	}
	//	return ret;
}

void Print(long long N)
{
	cout << v.size() << endl;
	set<pair<long long, long long> >::iterator it;
	for (it = v.begin(); it != v.end(); it++)
	{
		stringstream s;
		s << (*it).first;
		int length = s.str().size();
		cout << (*it).first << " + " << setfill('0') << setw(length - 1)
				<< (*it).second << " = " << N << endl;
	}
}

int main(int argc, const char* argv[])
{
	freopen("input.in", "r", stdin);
	freopen("output.out", "w", stdout);
	long long N;
	while (cin >> N)
	{
		v.clear();
		stringstream s;
		s << N;
		int length = s.str().size();
		for (int i = 0; i < 10; i++)
		{
			for (int j = 0; j < length; j++)
			{
				int M = N - i * pow(10, j);
				Solve(M, i, j);
			}
		}
		Print(N);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}
